/**
 * 1.删除最后一页全部数据时，删除成功后，分页组件需要自动往前翻页。
 * 2.一次删除多页数据时，如删除之前，当前页在最后一页，删除成功之后，分页组件需要自动往前翻页。
 * 3.只有n页时，自动隐藏分页组件。n 为props传递的
 */
export const AutoPageForward = function (Pagination) {
    return {
        props: {
            ...Pagination.props,
            minimum: {
                type: [String, Number],
                default: 0
            }
        },
        watch: {
            total(newTotal) {
                if (
                    this.currentPage > 1 &&
                    this.currentPage * this.pageSize - newTotal >= this.pageSize
                ) {
                    const newCurrentPage = Math.ceil(newTotal / this.pageSize) || 1
                    this.$listeners['current-change'](newCurrentPage)
                }
            }
        },
        render(h) {
            if (this.$props.total > this.$props.pageSize || this.$props.currentPage >= parseInt(this.minimum)) {
                return h(Pagination, {
                    on: { ...this.$listeners },
                    props: this.$props,
                    attrs: this.$attrs,
                    slots: this.$slots,
                    scopedSlots: this.$scopedSlots
                })
            }
        }
    }
}

